iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
永豐金融APIs

當金融與API相遇會擦出什麼火花?系列 第 19

<Day19> Subscribe — 訂閱及時Ticks逐筆成交資料

  • 分享至 

  • xImage
  •  

● 這章會示範如何訂閱ticks逐筆成交資料

Subscribe

之前幾章我們有介紹到什麼是ticks,還有如何取得ticks資料,可回去參考Day13
那這章我們來介紹什麼是Subscribe?
"Subscribe"中文為"訂閱"的意思,在Shioaji上,我們可以拿它來取得及時的報價資訊,即盤中報價。在股票的交易時間內,我們透過它去抓取每筆的成交資料,而這些資料都是即時更新的,所以每隔幾秒就會有新的資料被上傳上來。

如何Subscribe逐筆成交資料?

在訂閱之前,我們得先宣告quote_callback

為什要要宣告quote_callback?
因為在訂閱後,每當有一筆訂單成交時,永豐的Server就會及時傳這筆資料給我們
而quote_callback就是用來處理所回傳資料的函數
宣告quote_callback方式如下

@api.quote.on_quote
def quote_callback(topic: str, quote: dict):
    print(f"Topic: {topic}, Quote: {quote}")

接著我們以"永豐金"為例,代碼為「2890
來試著Subscribe它的ticks資料
以下為其程式碼

api.quote.subscribe(api.Contracts.Stocks["2890"], quote_type='tick')

如果出現以下畫面,Response Code為200,那就代表訂閱成功啦~~~~

https://ithelp.ithome.com.tw/upload/images/20211004/20139934yaV8W1ti46.png

由於沒有執行程式時,VS Code不會主動顯示輸出
所以我們要再設個時間,讓程式持續執行一段時間去抓取資料
程式碼如下

import time  #引入時間
time.sleep(10)  #持續執行10秒

執行結果如下

Topic: MKT/idcdmzpcr01/TSE/2890, Quote: {'AmountSum': [77407300.0], 'Close': [13.65], 'Date': '2021/10/12', 'TickType': [2], 'Time': '09:14:49.974072', 'VolSum': [5651], 'Volume': [10]}

英文名詞解釋

  • AmountSum: 總成交金額
  • Close: 成交價
  • Date: 交易日期
  • TickType: tick類型
  • Time: 交易時間
  • VolSum: 總成交量
  • Volume: 成交量

如何取消訂閱?

如果想要取消訂閱的話,則是要用"Unsubscribe"
程式碼如下

api.quote.unsubscribe(api.Contracts.Stocks["2890"], quote_type='tick')

上一篇
<Day18>什麼是K棒?如何用API取得歷史K棒資料?
下一篇
<Day20> Subscribe — 訂閱及時BidAsk五檔報價資料
系列文
當金融與API相遇會擦出什麼火花?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言